<?php
// +-----------------------------------------------------------------------+
// |                                                                       |
// | WebFormsQA     (Question - Answer)                                    |
// | Copyright  (C) 2010                                                   |
// | Official site  www.scale-tech.ru                                      |
// | email          scale-tech@mail.ru                                     |
// | autor          Alexander Demachev                                     |
// |                                                                       |
// | This program is free software; you can redistribute it and/or modify  |
// | it under the terms of the GNU General Public License as published by  |
// | the Free Software Foundation; version 2 of the License.               |
// |                                                                       |
// | This program is distributed in the hope that it will be useful,       |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of        |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         |
// | GNU General Public License for more details.                          |
// +-----------------------------------------------------------------------+


/**
 * @file edit_page.test.php
 * @brief файл содержит код для тестирования класса EditPage \n
 * @include edit_page.test.php
 */

/*! @addtogroup TestWebFormsQA Tестирование проекта WebFormsQA
 *  Группа включает классы для тестирования исходного кода
 *  @{
 */


/**
 * @class EditPageTest
 * @brief Класс для проверки методов страницы изменения ответов на вопросы EditPage \n
 *        Исходный код [ @ref edit_page.test.php ]
 */
class EditPageTest extends PHPUnit_TestCase {

    /**
     * Метод проверяет состояния административной страницы - "ИЗМЕНИТЬ ОТВЕТ"
     */
    function testUpdate()
    {
        require_once('smarty/smarty.class.php');
        $smarty         = new Smarty;
        $attr           = array(
            'first'          => 'string',       // имя пользователя
            'second'         => 'string'        // пароль пользователя
        );
        // путь к текущему активному шаблону
        $path_template  = "./templates/first/";
        $main_page= new MainPage($smarty, $attr, $path_template, "");

        DataAddTest::DeleteTestDataInDatabase();
        DataAddTest::AddTestDataInDatabase();
        
        // тестовый пользователь с административными правами
        $base   = &$GLOBALS["base"];
        $login 	= "testUser1";
        $pass	= "testUser1";
        $email	= "test@mail.ru";
        $admin	= true;
        $id     = 1;
        
        
        //    Состояния страницы:
        //    3)  Успешная авторизация
        //    4)  Начальное состояние - ничего не выбрано
        //    5)  Выбрана категория для которой нет ни одного вопроса.
        //    6)  Выбрана категория со списком вопросов.
        //    7)  Выбран вопрос с неправильным или не полным ответом.
        //    8)  Ответ изменен и добавлен в базу.
        $smarty->assign("state", 0);
        $_GET['edit_page'] = '';

        
        AuthCommon::unsetAuthSessionInfo();
        // пользователь не авторизован
        $main_page->update();
        $state = $smarty->get_template_vars('state');
        $this->assertEquals(1, $state);
        

        
        AuthCommon::addAuthSessionInfo($id, $login, $admin, $email);
        //   3)  Авторизация пройдена
        unset( $_GET['categoryID'] );
        $main_page->update();
        $state = $smarty->get_template_vars('state');
        $this->assertEquals(3, $state);

      
        // код переключения на нашу тестируемую страницу
        $id_category            = 4;
        $question               = "Кто такие Колобок и два жирафа";
        $email                  = "alex@rambler.ru";
        $this->assertTrue($base->addQuestion($id_category, $question, $email, $id));
        $answer                 = "Животные";
        $this->assertTrue($base->addAnswer($id, $answer));

        //    5)  Выбрана категория для которой нет ни одного вопроса.
        $_GET['categoryID']     = 1;
        $main_page->update();
        $state = $smarty->get_template_vars('state');
        $this->assertEquals(5, $state);
        
        //    6)  Выбрана категория со списком вопросов.
        $_GET['categoryID']     = 4;
        $main_page->update();
        $state = $smarty->get_template_vars('state');
        $this->assertEquals(6, $state);


        //    7)  Выбран вопрос с неправильным или не полным ответом.
        $_GET['questionID']         = "$id";
        $main_page->update();
        $state = $smarty->get_template_vars('state');
        $this->assertEquals(7, $state);

        //    8)  Ответ изменен и добавлен в базу.
        $_GET['but_answer'] = '';
        $_GET['answer']     = 'Герои детской передачи';
        $main_page->update();
        $state = $smarty->get_template_vars('state');
        $this->assertEquals(8, $state);

        // обнуление управляющих переменных
        unset($_GET['edit_page']);
        unset($_GET['categoryID']);
        unset($_GET['questionID']);
        unset($_GET['but_answer']);
        unset($_GET['answer']);
		unset( $_SESSION['categoryID'] );

    } // testUpdate


} // EditPageTest

/*! @} */

?>
